#include "headfiles.h"

using namespace std;

string zigZagConvert(string s, int nRows) {
    if (s.empty()) {
        return string("");
    }
    
    string *str = new string[nRows];
    if (str == NULL) {
        return string("");
    }
    
    int step, row_no, str_index = 0;
    int str_size = s.length();
    step = 1;
    row_no = 0;
    for (str_index = 0; str_index < str_size; str_index++) {
        str[row_no].push_back(s[str_index]);
        row_no += step;
        if (row_no >= nRows) {
            row_no = nRows - 2;
            if (row_no < 0) {
                row_no = 0;
            }
            step = -1;
        }
        
        if (row_no < 0) {
            if (nRows <= 1) {
                row_no = 0;
            }
            else {
                row_no = 1;
            }
            step = 1;
        }
    }
    
    string res;
    for (row_no = 0; row_no < nRows; row_no++) {
        res.append(str[row_no]);
        str[row_no].clear();
    }
    
    return res;
}
